import os
import re
import time

# 默认配置
DEFAULT_CONFIG = {
    'min_face_size': (30, 30),  # 最小人脸尺寸
    'confidence_threshold': 0.6,  # 置信度阈值
    'camera_id': 0,  # 默认摄像头ID
    'frame_interval': 100,  # 帧间隔（毫秒）
    'face_cascade_file': 'haarcascade_frontalface_default.xml',  # 人脸检测模型文件
    'max_faces_per_person': 5,  # 每个人采集的人脸图像数量
    'face_capture_interval': 1.0,  # 人脸采集间隔（秒）
    'scale_factor': 1.1,  # 人脸检测的缩放因子
    'min_neighbors': 5,  # 人脸检测的最小邻居数
    'recognition_threshold': 30  # 人脸识别的置信度阈值（百分比）
}

def get_project_root():
    """获取项目根目录"""
    return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

def get_database_path():
    """获取数据库文件路径"""
    return os.path.join(get_project_root(), 'face_database', 'database.json')

def get_faces_dir():
    """获取人脸图片存储目录"""
    return os.path.join(get_project_root(), 'face_database', 'faces')

def validate_name(name):
    """验证姓名是否合法"""
    if not name or not isinstance(name, str):
        return False, "姓名不能为空且必须是字符串"
    
    if len(name) > 50:
        return False, "姓名长度不能超过50个字符"
    
    # 只允许中文、英文、数字和常见标点
    pattern = r'^[\u4e00-\u9fa5a-zA-Z0-9_\-\.]+$'
    if not re.match(pattern, name):
        return False, "姓名只能包含中文、英文、数字、下划线、中划线和点"
    
    return True, "姓名格式正确"

def generate_timestamp():
    """生成时间戳"""
    return int(time.time() * 1000) 